
// 冒泡排序第4版   鸡尾酒排序
function sort(array) {
  let tmp = 0;
  for (let i = 0; i < Math.floor(array.length / 2); i++) {
    //有序标记，每一轮的初始值都是true
    let isSorted = true;
    //奇数轮，从左向右比较和交换
    for (let j = i; j < array.length - i - 1; j++) {
      if (array[j] > array[j + 1]) {
        tmp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = tmp;
        //有元素交换，所以不是有序的，标记变为false
        isSorted = false;
      }
    }
    if (isSorted) {
      break;
    }
    //在偶数轮之前，将isSorted重新标记为true
    isSorted = true;
    //偶数轮，从右向左比较和交换
    for (let j = array.length - i - 1; j > i; j--) {
      if (array[j] < array[j - 1]) {
        tmp = array[j];
        array[j] = array[j - 1];
        array[j - 1] = tmp;
        //因为有元素交换，所有不是有序的，标记变为false
        isSorted = false;
      }
    }
    if (isSorted) {
      break;
    }
  }
}
let array = [2,3,4,5,6,7,8,1];
sort(array);
console.log(array);
